Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核调试

帖子发起人: welfear   发起时间: 2009-04-20 12:00 下午   回复: 7

Print Search
帖子排序:    
   2009-04-20, 12:00 下午
welfear 离线,最后访问时间: 2009/6/25 23:10:51 welfear

发帖数前150位
注册: 2006-12-31
发 贴: 7
PnP BIOS In Driver
Reply Quote

我需要Windows Driver里调用 PnP BIOS的服务,我认为DMIScope的驱动就是这么修改DMI的。

但是有一台机器无法使用DMIScope修改DMI但可以在实模式下使用AMI的DMI editor修改DMI,而DMI Editor是直接调用PnP BIOS实现的。

所以我想请问,在保护模式下调用16位的PnP BIOS是否可行?

谢谢!


IP 地址: 已记录   报告
   2009-04-21, 08:58 上午
Sysnap2006 离线,最后访问时间: 2009/12/21 21:33:34 Sysnap2006

发帖数前500位
注册: 2009-04-21
发 贴: 2
Re: PnP BIOS In Driver
Reply Quote
保护模式下调用BIOS可以通过vm8086来实现....在用户态调用比较简单..WINDOWS会帮你处理...在驱动里就需要自己设置下了....应该是可以实现的...因为缺换显示模式需要用到BIOS..
IP 地址: 已记录   报告
   2009-04-21, 09:39 上午
WANGyu 离线,最后访问时间: 2012/9/10 3:34:00 王宇

发帖数前10位
男
注册: 2007-05-08
发 贴: 306
Re: PnP BIOS In Driver
Reply Quote
欢迎 sysnap~
IP 地址: 已记录   报告
   2009-04-21, 12:30 下午
welfear 离线,最后访问时间: 2009/6/25 23:10:51 welfear

发帖数前150位
注册: 2006-12-31
发 贴: 7
Re: PnP BIOS In Driver
Reply Quote

多谢 sysnap!

 我在ring 3下使用了sinister的方法修改了TSS,又使用Porttalk的方法都没有成功.

我看了看DMIScope的驱动实现,应该是通过自己设置门来实现,但也没有成功 ;-(.

然后我把所有情况都排列组合一下,还是没有成功.

我认为使用v86模式调用PnP BIOS应该在TSS上下功夫,但依然没有结果.

 


IP 地址: 已记录   报告
   2009-04-21, 23:21 下午
welfear 离线,最后访问时间: 2009/6/25 23:10:51 welfear

发帖数前150位
注册: 2006-12-31
发 贴: 7
Re: PnP BIOS In Driver
Reply Quote
我在Linux Driver里找到了参考代码;-)
IP 地址: 已记录   报告
   2009-04-21, 23:40 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: PnP BIOS In Driver
Reply Quote
不知道你要调用的16代码是不是相对简单和固定,如果其中会调用传统的BIOS服务(INT 15等),那么运行时还是会出问题。Windows使用了类似解释执行的方法,进入系统后,会把16位代码“翻译”为32位形式执行,这样会把“危险的”调用重定向。
IP 地址: 已记录   报告
   2009-04-22, 09:26 上午
welfear 离线,最后访问时间: 2009/6/25 23:10:51 welfear

发帖数前150位
注册: 2006-12-31
发 贴: 7
Re: PnP BIOS In Driver
Reply Quote
您说的是ntvdm???
我把我碰到的情况详细说明一下:
我需要在windows nt中运行PnP BIOS规范中描述的PnP BIOS调用,
根据描述中的说明在"$PnP"之后有两个调用地址,一个是实模式下的入口地址,
一个是16位保护模式下的入口地址。我简单的看了看代码,没有中断调用,但是有
敏感指令使用。
我在Linux Driver中找到了通过/proc访问PnP BIOS的代码,也就是我所说的参考代码。
另外还可以试试KeI386BiosCall 之类的函数。
IP 地址: 已记录   报告
   2009-04-29, 10:30 上午
WANGyu 离线,最后访问时间: 2012/9/10 3:34:00 王宇

发帖数前10位
男
注册: 2007-05-08
发 贴: 306
Re: PnP BIOS In Driver
Reply Quote

嗯,Ke386CallBios 就是从 VDM 走的。

NTSTATUS
Ke386CallBios (
    IN ULONG BiosCommand,
    IN OUT PCONTEXT BiosArguments
    )

/*++

Routine Description:

    This function invokes specified ROM BIOS code by executing
    "INT BiosCommand."  Before executing the BIOS code, this function
    will setup VDM context, change stack pointer ...etc.  If for some reason
    the operation fails, a status code will be returned.  Otherwise, this
    function always returns success regardless of the result of the BIOS
    call.

    N.B. This implementation relies on the fact that the direct
         I/O access operations between apps are serialized by win user.

Arguments:

    BiosCommand - Supplies which ROM BIOS function to invoke.

    BiosArguments - Supplies a pointer to the context which will be used
                    to invoke ROM BIOS.

Return Value:

    NTSTATUS code to specify the failure.

--*/

bios int 0x10 的调用:

        #define V86_CODE_ADDRESS    0x10000


        PUCHAR BaseAddress = (PUCHAR)V86_CODE_ADDRESS;

        //
        // Write "Int BiosCommand; bop" to reserved user space (0x1000).
        // Later control will transfer to the user space to execute
        // these two instructions.
        //

        *BaseAddress++ = INT_OPCODE;
        *BaseAddress++ = (UCHAR)BiosCommand;       /* ARG-2 */
        *(PULONG)BaseAddress = V86_BOP_OPCODE;

00010000 cd 10 c4 c4 fe 00 cd cd cd cd cd cd cd cd  ..............


IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » PnP BIOS In Driver

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.